the 12 Factor App
日本語版
なんとなくまとめた 全然嘘かもしれないので、参考程度に
1. コードベース
リポジトリに対して、関心は一個に絞る
関心に対して、リポジトリは一個に絞る
2. 依存関係
例:package.jsonのscriptsにrmを使わずにrimrafを使え 3. 設定
設定をハードコードせずに環境変数に入れる
4. バックエンドサービス
サービスとリソースを分けて、適切なプロトコルでつなぎ合わせよう
5. ビルド、リリース、実行
ビルド、リリース、実行は明確に分ける
動いてるものに触るな!
6. プロセス
全てのプロセス(=アプリケーション)は状態を永続的に保持することはない
永続的に保持したいならそれはDBなどに突っ込むべきである
7. ポートバインディング
アプリケーションの公開が何らかの外側のサーバーに依存してはならない
プロセスがサーバーとしての機能を持ち合わせてポート単位で公開可能なように設計すべきである
8. 並行性
1台のスパコンよりは100台の汎用機の方が良い
垂直性よりも並行性のほうがスケールアウトしやすい
9. 廃棄容易性
必要ならばすぐにかつ安全にプロセスを起動/終了できるように設計すべき
リリースや,スケールアップの時間は短いほうがよい
プロセスは突然死ぬので、それは想定するべきである
10. 開発/本番一致
わけがわからなくなるので開発と本番で道具のバージョンとかはなるべく揃えましょう
11. ログ
ログはどこでも普遍に利用可能な標準出力として出すべき
どっかにファイルとして書いて保存しっぱなしは良くない
12. 管理プロセス
管理するためのプロセスは初めに一回やって済むようにすべき
2(ツー)